% funkcja realizujaca elementarny ruch w wewnwtrznym korytarzu
% kierunek: 1 - w prawo; 2 - w lewo
% rodzaj: 1 - ze zwalanieniem ; 2 - ostatni krok
% indeks_robota - robot dla ktorego przeprowadzamy operacje

% zwracamy: 1 - powodzenie operacji; 0 - niepowodzenie operacji

function ret = ruch(kierunek,rodzaj,indeks_robota)

global roboty
global mapa
global serwer_ob

pozycja = roboty(indeks_robota).pozycja;
start = roboty(indeks_robota).start;
ret = 0;

%okreslamy wjazd do korytarza
 % wjazd zachodni lub wschodni
 korytarz = roboty(indeks_robota).indeks_korytarza; %zapamietujemy indeks aktualnego korytarza
 wjazd = roboty(indeks_robota).start(1) < serwer_ob.korytarze(korytarz,4).x;

   % tutaj okreslamy jakiemu polu w masce korytarza odpowiada aktualna
 % pozycja robota
    punkt = pozycja(1) - start(1);
    if punkt < 0
        start = start  - 7;
        punkt = pozycja(1) - start(1) + 1;
    else
        if wjazd
        punkt = punkt + 1;
        else
            punkt = punkt + 8;
        end
    end
    
    wartosc = indeks_robota;
    if rodzaj == 2 
        wartosc = 0;
    end
   
    
if kierunek == 1 
    if mapa(pozycja(1)+1,pozycja(2)) == wartosc % mozemy wykonac ruch
        if rodzaj > 0 
        mapa(pozycja(1),pozycja(2)) = 0;  % zwolnienie na mapie 
        roboty(indeks_robota).maska_korytarza(punkt).r = 0; % zwolanienie w masce
        end
        roboty(indeks_robota).pozycja(1) = roboty(indeks_robota).pozycja(1) + 1;
        mapa(roboty(indeks_robota).pozycja(1),roboty(indeks_robota).pozycja(2)) = indeks_robota;
        ret = 1;
    end
elseif kierunek == 2
    if mapa(pozycja(1)-1,pozycja(2)) == wartosc % mozemy wykonac ruch
        if rodzaj > 0
        mapa(pozycja(1),pozycja(2)) = 0;  % zwolnienie na mapie 
        roboty(indeks_robota).maska_korytarza(punkt).r = 0; % zwolanienie w masce
        end
        roboty(indeks_robota).pozycja(1) = roboty(indeks_robota).pozycja(1) - 1;
        mapa(roboty(indeks_robota).pozycja(1),roboty(indeks_robota).pozycja(2)) = indeks_robota;
        ret = 1;
    end
end
  